package com.ttbj.product.api;

import java.util.List;
import java.util.stream.Collectors;

import org.springframework.beans.factory.annotation.Autowired;

import com.ttbj.product.bean.dto.DriverDto;
import com.ttbj.product.bean.dto.EntitieDto;
import com.ttbj.product.bean.dto.OrderDto;
import com.ttbj.product.bean.dto.WaybillDto;

/**
 * 货运接口 根据订单id查询所有的货运单信息 根据单个货运单id查询货运单信息
 * 货运单表的服务提供者
 * 单纯的货运表以及相应的关联表的增删改查
 * @author Medivh
 *
 */
public interface WaybillFacade {

	/**
	 * 根据订单id查询所有的货运单信息
	 * 
	 * @param orderId
	 * @return
	 */
	List<WaybillDto> allWayBill(Long orderId);
	
	default 	List<WaybillDto> allWayBillByNonRefuse(Long orderId){
		List<WaybillDto> allWayBill = allWayBill(orderId);
		return allWayBill.stream().filter(waybill -> -1 != waybill.getWaybillState() ).collect(Collectors.toList());
	}

	/**
	 * 根据货运单id查询货运单
	 * 
	 * @param id
	 * @return
	 */
	WaybillDto queryWayBill(WaybillDto waybillDto);

	/**
	 * 根据订单id查询订单所属的司机信息
	 * 
	 * @param waybills
	 * @return
	 * @throws Exception
	 */
	List<DriverDto> allDriver(Long orderId);

	 /**
	  * 配运单生成 派单
	  * @param orderDto
	  * @return 生成成功的个数
	  * @throws Exception
	  */
	Integer newWaybill(OrderDto orderDto) throws Exception;

	/**
	 * 当天拒单的次数
	 * @param driverid
	 * @return
	 */
	
	 Integer refuseNum(Long driverid);
	 
	 /**
	  * 根据配送单id,修改配送单状态
	  * @return
	 * @throws Exception 
	  */
	 Integer updateState(WaybillDto waybill,Integer stateFlag) throws Exception;
	 

 

}
